home *** CD-ROM | disk | FTP | other *** search
/ TPUG - Toronto PET Users Group / TPUG Users Group CD / TPUG Users Group CD.iso / AMIGA / AMICUS / AMIBEST1.ADF / AmigaBasicStuff / BasicGadgets / GdgtDemo < prev    next >
Text File  |  1987-07-22  |  4KB  |  139 lines

  1. ' Demonstration of using Gadgets in Amiga Basic
  2. '
  3. ' Bryan D. Catley
  4. ' September 1986
  5. '
  6. gdgt=0:NumGdgts=16
  7. GdgtA%=0:GdgtB%=0
  8. DIM Gdgts(NumGdgts-1,6),GdgtTxt$(NumGdgts-1)
  9. BldGdgts NumGdgts,Gdgts(),GdgtTxt$()
  10.  
  11. ' Gadget Descriptions
  12. REM    X    Y   X+   Y+  BG  FG  Sh  Text          
  13. DATA 184,  24,  48,  24,  1, 17,  2, "More" 
  14. DATA 248,  24,  48,  24,  1,  5,  2, "Quit"
  15. DATA  28,  76,  16,  16,  7, 17,  5, "Q"
  16. DATA 140, 108, 120,  16,  0,  2,  1, "  A Long One"
  17. DATA 216,  64,  64,  24,  4,  5,  0, "  XX"
  18. DATA  38, 158, 164,  12,  0,  1, -1, "" 
  19. DATA 196,  28,  56,  16,  1, 17,  2, "Repeat"
  20. DATA 260,  28,  40,  16,  1,  5,  2, "Quit"
  21. DATA  12,  92,  46,  16,  7,  5,  2, "Type1" 
  22. DATA  60,  92,  46,  16,  1,  0,  2, "Type2"
  23. DATA 108,  92,  46,  16,  1,  0,  2, "Type3"
  24. DATA 156,  92,  46,  16,  1,  0,  2, "Type4"
  25. DATA 204,  92,  46,  16,  1,  0,  2, "Type5"
  26. DATA 252,  92,  46,  16,  7, 17,  2, "Type6"
  27. DATA 118, 158, 180,  12,  7,  4, -1, ""
  28. DATA  38, 126, 124,  12,  3,  3, -2, "No Change"
  29.  
  30. SCREEN 2,320,200,5,1
  31. WINDOW 2,,,16,2
  32. ON MOUSE GOSUB GetMouse:MOUSE ON
  33.  
  34. FirstOne:
  35. COLOR 3,25:CLS:LOCATE 1,11:PRINT"AMIGA BASIC GADGETS"
  36. LINE(0,16)-(312,16),2
  37. COLOR 2,25:LOCATE 5,1:PRINT"These are real Gadgets"
  38. DrawGdgts 0,1,Gdgts(),GdgtTxt$()
  39. LINE(0,56)-(312,56),2
  40. CALL DrawGdgts (2,5,Gdgts(),GdgtTxt$())
  41. COLOR 2,0:LOCATE 21,6:PRINT"Some text to change.":COLOR 2,4
  42.  
  43. NxtGadget1:
  44. GdgtA%=0:GdgtB%=5:gdgt=0
  45. WHILE gdgt=0:SLEEP:WEND
  46. ON gdgt GOTO SecondOne,Quit,ShoGdgt1,ShoGdgt1,ShoGdgt1,ShoGdgt1
  47.  
  48. ShoGdgt1:
  49. COLOR 2,25:LOCATE 23,19:PRINT SPACE$(15);
  50. LOCATE 23,2:PRINT"You just clicked: ";GdgtTxt$(gdgt-1);
  51. GOTO NxtGadget1
  52.  
  53. SecondOne:
  54. COLOR 7,25:CLS:LOCATE 1,11:PRINT"AMIGA BASIC GADGETS"
  55. LINE(0,16)-(312,16),2
  56. COLOR 2,25:LOCATE 5,7:PRINT"More real Gadgets"
  57. CALL DrawGdgts (6,7,Gdgts(),GdgtTxt$())
  58. LINE(0,56)-(312,56),2
  59. DrawGdgts 8,15,Gdgts(),GdgtTxt$()
  60. COLOR 2,7:LOCATE 21,16:PRINT"More changes...":COLOR 2,4
  61.  
  62. NxtGadget2:
  63. GdgtA%=6:GdgtB%=15:gdgt=0
  64. WHILE gdgt=0:SLEEP:WEND
  65. IF gdgt>2 THEN ShoGdgt2
  66. ON gdgt GOTO FirstOne,Quit
  67.  
  68. ShoGdgt2:
  69. COLOR 2,25:LOCATE 23,19:PRINT SPACE$(15);:gdgt=gdgt-1+7
  70. LOCATE 23,2:PRINT"You just clicked: ";GdgtTxt$(gdgt-1);
  71. GOTO NxtGadget2
  72.  
  73. Quit:
  74. MOUSE OFF
  75. WINDOW CLOSE 2:SCREEN CLOSE 2
  76. END
  77.  
  78. ' Mouse Interrupt Routine
  79. GetMouse:
  80. GetGdgt GdgtA%,GdgtB%,Gdgts(),GdgtTxt$(),gdgt
  81. RETURN
  82.   
  83. SUB BldGdgts (Num,T1(),T2$()) STATIC
  84. FOR n=0 TO Num-1
  85.   FOR m=0 TO 6
  86.     READ T1(n,m)
  87.   NEXT m
  88.   READ T2$(n)
  89. NEXT n
  90. END SUB
  91.  
  92. SUB DrawGdgts (Ga%,Gb%,T1(),T2$()) STATIC
  93. FOR n=Ga% TO Gb%
  94.   x1=T1(n,0):y1=T1(n,1):x2=x1+T1(n,2):y2=y1+T1(n,3)
  95.   bg=T1(n,4):fg=T1(n,5):bo=T1(n,6)
  96.   LINE(x1,y1)-(x2,y2),bg,bf:LINE(x1,y1)-(x2,y2),fg,b
  97.   IF bo>-1 THEN
  98.     LINE(x1+2,y1+2)-(x2-2,y2-2),fg,b
  99.     LINE(x2+1,y1+1)-(x2+1,y2+1),bo
  100.     LINE(x2+1,y2+1)-(x1+1,y2+1),bo
  101.     COLOR fg,bg:row%=INT(y1/8+2):col%=INT(x1/8+2)
  102.     LOCATE row%,col%:PRINT T2$(n)
  103.   END IF
  104. NEXT n
  105. END SUB
  106.  
  107. SUB GetGdgt (Ga%,Gb%,T1(),T2$(),type) STATIC
  108. SHARED MouseX%,MouseY%,MouseInd
  109. WHILE MOUSE(0)=0:WEND
  110. r%=CSRLIN:c%=POS(0)
  111. mx=MOUSE(1):my=MOUSE(2)
  112. MouseX%=mx:MouseY%=my:MouseInd=0
  113. FOR n=Ga% TO Gb%
  114.   IF mx>T1(n,0) AND mx<T1(n,0)+T1(n,2) THEN
  115.     IF my>T1(n,1) AND my<T1(n,1)+T1(n,3) THEN
  116.       bg=T1(n,4):fg=T1(n,5):bo=T1(n,6)
  117.       IF bo>-1 THEN
  118.         x1=T1(n,0)+2:y1=T1(n,1)+2
  119.         x2=x1+T1(n,2)-4:y2=y1+T1(n,3)-4
  120.         LINE(x1,y1)-(x2,y2),fg,bf
  121.         COLOR bg,fg:row%=INT(y1/8+2):col%=INT(x1/8+2)
  122.         LOCATE row%,col%:PRINT T2$(n)
  123.       ELSE
  124.         IF bo=-1 THEN
  125.           x1=T1(n,0):y1=T1(n,1):x2=x1+T1(n,2):y2=y1+T1(n,3)
  126.           LINE(x1,y1)-(x2,y2),fg,bf:LINE(x1,y1)-(x2,y2),bg,b
  127.         END IF
  128.       END IF
  129.       type=n-Ga%+1:n=Gb%:MouseInd=1
  130.       IF bo>-1 THEN n%=type+Ga%-1
  131.     END IF
  132.   END IF
  133. NEXT n
  134. WHILE MOUSE(0)<>0:WEND
  135. IF type<>0 AND bo>-1 THEN DrawGdgts n%,n%,T1(),T2$()
  136. LOCATE r%,c%
  137. END SUB
  138.  
  139.